import { world } from '@minecraft/server';

world.beforeEvents.worldInitialize.subscribe(({ itemComponentRegistry }) => {

    itemComponentRegistry.registerCustomComponent('gold_beetroot:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:speed', 400, { amplifier: 0 });
            source.removeEffect('minecraft:mining_fatigue');
            source.removeEffect('minecraft:nausea');
        }
    });

    itemComponentRegistry.registerCustomComponent('gold_beetroot_soup:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:absorption', 2400, { amplifier: 1 });
            source.addEffect('minecraft:regeneration', 1200, { amplifier: 1 });
            source.addEffect('minecraft:speed', 2400, { amplifier: 0 });
            source.removeEffect('minecraft:nausea');
            source.removeEffect('minecraft:mining_fatigue');
        }
    });

    itemComponentRegistry.registerCustomComponent('gold_chorus_fruit:trigger', {
        onConsume: ({ source }) => {
            const MAX_DIST = 64;
            const head = source.getHeadLocation();
            const view = source.getViewDirection();
            const dim  = source.dimension;

            let safePos = null;

            for (let d = 1; d <= MAX_DIST; d += 0.5) {
                const x = Math.floor(head.x + view.x * d);
                const y = Math.floor(head.y + view.y * d);
                const z = Math.floor(head.z + view.z * d);

                if (y < -64 || y > 319) break;

                try {
                    const blockFeet = dim.getBlock({ x, y,     z });
                    const blockHead = dim.getBlock({ x, y: y + 1, z });

                    if (!blockFeet?.isAir || !blockHead?.isAir) break;

                    safePos = { x: x + 0.5, y, z: z + 0.5 };
                } catch { break; }
            }

            const fromPos = source.location;

            if (safePos) {
                dim.playSound('mob.endermen.portal', fromPos);
                source.teleport(safePos);
                dim.playSound('mob.endermen.portal', safePos);
            } else {
                const fallback = { x: head.x + view.x, y: head.y + view.y, z: head.z + view.z };
                dim.playSound('mob.endermen.portal', fromPos);
                source.teleport(fallback);
                dim.playSound('mob.endermen.portal', fallback);
            }

            source.addEffect('minecraft:invisibility', 600, { amplifier: 0 });
            source.addEffect('minecraft:slow_falling', 600, { amplifier: 0 });
            source.removeEffect('minecraft:slowness');
            source.removeEffect('minecraft:mining_fatigue');
        }
    });

    itemComponentRegistry.registerCustomComponent('gold_bread:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:absorption', 600, { amplifier: 2 });
            source.addEffect('minecraft:instant_health', 1, { amplifier: 2 });
            source.removeEffect('minecraft:hunger');
        }
    });

    itemComponentRegistry.registerCustomComponent('gold_potato:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:saturation', 400, { amplifier: 1 });
            source.addEffect('minecraft:speed', 400, { amplifier: 0 });
            source.addEffect('minecraft:strength', 400, { amplifier: 0 });
        }
    });

    itemComponentRegistry.registerCustomComponent('gold_pie:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:absorption', 600, { amplifier: 0 });
            source.addEffect('minecraft:fire_resistance', 600, { amplifier: 0 });
            source.addEffect('minecraft:speed', 600, { amplifier: 0 });
            source.removeEffect('minecraft:poison');
        }
    });

    itemComponentRegistry.registerCustomComponent('gold_berries:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:haste', 600, { amplifier: 0 });
            source.removeEffect('minecraft:poison');
        }
    });

    itemComponentRegistry.registerCustomComponent('gold_spider_eye:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:poison', 100, { amplifier: 0 });
            source.addEffect('minecraft:regeneration', 200, { amplifier: 2 });
        }
    });

    itemComponentRegistry.registerCustomComponent('gold_fried_egg:trigger', {
        onConsume: ({ source }) => {
            source.removeEffect('minecraft:poison');
            source.removeEffect('minecraft:nausea');
            source.removeEffect('minecraft:weakness');
            source.removeEffect('minecraft:wither');
            source.removeEffect('minecraft:fatal_poison');
        }
    });

    itemComponentRegistry.registerCustomComponent('gold_enchanted_carrot:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:absorption', 2400, { amplifier: 2 });
            source.addEffect('minecraft:haste', 2400, { amplifier: 2 });
            source.addEffect('minecraft:night_vision', 2400, { amplifier: 2 });
        }
    });

    itemComponentRegistry.registerCustomComponent('gold_soup:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:haste', 2400, { amplifier: 0 });
            source.addEffect('minecraft:resistance', 2400, { amplifier: 0 });
            source.addEffect('minecraft:speed', 2400, { amplifier: 0 });
        }
    });

    itemComponentRegistry.registerCustomComponent('gold_baked_potato:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:saturation', 2400, { amplifier: 1 });
            source.addEffect('minecraft:speed', 2400, { amplifier: 0 });
            source.addEffect('minecraft:strength', 2400, { amplifier: 0 });
        }
    });

initEvent.itemComponentRegistry.registerCustomComponent('teleport:trigger', {
onConsume({ source }) {
    source.runCommand("spreadplayers ~  ~ 3 15 @p")
},
});





//*  Enchanted foods   ↓ *//
/////////* All Lv. +1 & effect duration ×2  *///////

itemComponentRegistry.registerCustomComponent('en_beetroot:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:speed', 800, { amplifier: 1 });
            source.removeEffect('minecraft:mining_fatigue');
            source.removeEffect('minecraft:nausea');
        }
    });

    itemComponentRegistry.registerCustomComponent('en_beetroot_soup:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:absorption', 2800, { amplifier: 2 });
            source.addEffect('minecraft:regeneration', 2400, { amplifier: 2 });
            source.addEffect('minecraft:speed', 4800, { amplifier: 1 });
            source.removeEffect('minecraft:nausea');
            source.removeEffect('minecraft:mining_fatigue');
        }
    });
    itemComponentRegistry.registerCustomComponent('en_bread:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:absorption', 1200, { amplifier: 3 });
            source.addEffect('minecraft:instant_health', 2, { amplifier: 3 });
            source.removeEffect('minecraft:hunger');
        }
    });

    itemComponentRegistry.registerCustomComponent('en_potato:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:saturation', 800, { amplifier: 2 });
            source.addEffect('minecraft:speed', 800, { amplifier: 1 });
            source.addEffect('minecraft:strength', 800, { amplifier: 1 });
        }
    });

    itemComponentRegistry.registerCustomComponent('en_pie:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:absorption', 1200, { amplifier: 1 });
            source.addEffect('minecraft:fire_resistance', 1200, { amplifier: 0 });
            source.addEffect('minecraft:speed', 1200, { amplifier: 1 });
            source.removeEffect('minecraft:poison');
        }
    });

    itemComponentRegistry.registerCustomComponent('en_berries:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:haste', 1200, { amplifier: 1 });
            source.removeEffect('minecraft:poison');
        }
    });

    
    itemComponentRegistry.registerCustomComponent('en_fried_egg:trigger', {
        onConsume: ({ source }) => {
            source.removeEffect('minecraft:poison');
            source.removeEffect('minecraft:nausea');
            source.removeEffect('minecraft:weakness');
            source.removeEffect('minecraft:wither');
            source.removeEffect('minecraft:fatal_poison');
        }
    });

    itemComponentRegistry.registerCustomComponent('en_enchanted_carrot:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:absorption', 4800, { amplifier: 3 });
            source.addEffect('minecraft:haste', 4800, { amplifier: 3 });
            source.addEffect('minecraft:night_vision', 4800, { amplifier: 3 });
        }
    });

    itemComponentRegistry.registerCustomComponent('en_soup:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:haste', 4800, { amplifier: 1 });
            source.addEffect('minecraft:resistance', 4800, { amplifier: 0 });
            source.addEffect('minecraft:speed', 4800, { amplifier: 1 });
        }
    });

    itemComponentRegistry.registerCustomComponent('en_baked_potato:trigger', {
        onConsume: ({ source }) => {
            source.addEffect('minecraft:saturation', 4800, { amplifier: 1 });
            source.addEffect('minecraft:speed', 4800, { amplifier: 1 });
            source.addEffect('minecraft:strength', 4800, { amplifier: 2 });
        }
    });

 initEvent.itemComponentRegistry.registerCustomComponent('en_teleport:trigger', {
   onConsume({ source }) {
    source.runCommand("spreadplayers ~  ~ 10 50 @p")
},
}); 



});
